---
title: "Interactive CV"
output:
flexdashboard::flex_dashboard:
css: "style.css"
social: ["github", "linkedin", "facebook", "twitter", "whatsapp", "menu"]
source_code: embed
orientation: rows
vertical_layout: fill
theme:
version: 4
bootswatch: minty
---
```{r setup, include=FALSE, echo=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(DT)
library(tidyr)
library(flexdashboard)
library(leaflet)
library(readxl)
library(crosstalk)
library(ggplot2)
library(plotly)
```
```{r data, include=FALSE, echo=FALSE}
input <- read_excel("input.xlsx") |> mutate(To = replace_na(To, Sys.Date()))
df <- input |>
mutate(FromFormat = format(as.Date(input$From), '%b-%Y'),
ToFormat = format(as.Date(input$To), '%b-%Y'),
tag = paste('<font size="+2"> <b>', Position, '</b> at', Company,
'</font> </br><p> <font size="-2"> <i>', FromFormat, ' to ', ToFormat, '</i> </font> </p> <hr>
<li>', Desc1, '</li> <li>', Desc2, '</li> <li>', Desc3, '</li> <li>', Desc4, '</li> <li>', Desc5, '</li>'))
shared_df <- SharedData$new(df)
```
Mark Ustel
=====================================
Row {data-height=250}
-------------------------------------
###
```{r timeline, echo=FALSE}
plot_ly(data = shared_df,
x = ~From,
y = ~rep(0,7),
color = ~Company,
type = 'scatter',
mode = 'markers',
opacity = 0.85,
text = ~paste('<b>', Position, '</b> at', Company, '</br> <i> From ', FromFormat, ' to ', ToFormat, '</i>'),
marker = list(size = 30)) |>
highlight(on = "plotly_hover", off = "plotly_doubleclick") |>
layout(title = list(text = "Work History",
x = 0.05,
y = 0.9),
xaxis = list(title = FALSE,
showticklabels = TRUE,
showgrid = TRUE),
yaxis = list(title = FALSE,
showticklabels = FALSE,
showgrid = FALSE),
showlegend = FALSE) |>
config(displayModeBar = FALSE)
```
Row {data-height=500}
-------------------------------------
###
```{r workexperience, echo=FALSE}
datatable(shared_df, escape=FALSE,
options = list(columnDefs = list(list(visible=FALSE, targets=c(seq(1:16)))),
pageLength = 1, lengthChange = FALSE, info = FALSE,
style = 'auto',
language = list(search = "<i class='glyphicon glyphicon-search'></i>"),
searchHighlight = TRUE,
headerCallback = JS(
"function(thead, data, start, end, display){",
" $(thead).remove();",
"}")
) )
```
###
```{r, echo=FALSE}
```
###
```{r map, echo=FALSE}
leaflet() |>
addProviderTiles(
providers$CartoDB.Positron,
group = "CartoDB",
options = providerTileOptions(opacity = 0.95)
) |>
addProviderTiles(
"Stamen.Terrain",
group = "Terrain",
options = providerTileOptions(opacity = 0.75)
) |>
addProviderTiles(
"Stamen.Toner",
group = "Toner",
options = providerTileOptions(opacity = 0.5)
) |>
addProviderTiles(
"Stamen.Watercolor",
group = "Watercolor",
options = providerTileOptions(opacity = 0.5)
) |>
# add a layers control
addLayersControl(
baseGroups = c("CartoDB", "Terrain", "Toner", "Watercolor"),
position = "topleft"
) |>
addMarkers(lng=0.102310, lat=51.772938, label="Home") |>
addCircleMarkers(data = shared_df, lng = ~lon, lat = ~lat, label = ~Company)
```
Row {data-height=250}
-------------------------------------
###
```{r, echo=FALSE}
# Library
library(fmsb)
# Create data: note in High school for several students
set.seed(99)
data <- as.data.frame(matrix( sample( 0:20 , 15 , replace=F) , ncol=5))
colnames(data) <- c("math" , "english" , "biology" , "music" , "R-coding" )
rownames(data) <- paste("mister" , letters[1:3] , sep="-")
# To use the fmsb package, I have to add 2 lines to the dataframe: the max and min of each variable to show on the plot!
data <- rbind(rep(20,5) , rep(0,5) , data)
# plot with default options:
radarchart(data)
```
About
=====================================